package com.blog.cmrpersonalblog.dto.dashboard;

import lombok.Data;

import java.util.List;

/**
 * 仪表盘响应DTO
 */
@Data
public class DashboardResponse {

    /**
     * 今日新增数据
     */
    private TodayStats todayStats;

    /**
     * 平台活跃度数据
     */
    private ActivityStats activityStats;

    /**
     * 内容增长趋势数据（近7天）
     */
    private GrowthTrendStats growthTrendStats;

    /**
     * 今日新增统计
     */
    @Data
    public static class TodayStats {
        /**
         * 今日新增用户数
         */
        private Long newUsers;

        /**
         * 今日新增文章数
         */
        private Long newArticles;

        /**
         * 今日新增评论数
         */
        private Long newComments;

        /**
         * 昨日新增用户数（用于对比）
         */
        private Long yesterdayUsers;

        /**
         * 昨日新增文章数（用于对比）
         */
        private Long yesterdayArticles;

        /**
         * 昨日新增评论数（用于对比）
         */
        private Long yesterdayComments;

        /**
         * 用户增长率（相比昨日）
         */
        private Double userGrowthRate;

        /**
         * 文章增长率（相比昨日）
         */
        private Double articleGrowthRate;

        /**
         * 评论增长率（相比昨日）
         */
        private Double commentGrowthRate;
    }

    /**
     * 平台活跃度统计
     */
    @Data
    public static class ActivityStats {
        /**
         * 日活跃用户数（DAU）
         */
        private Long dailyActiveUsers;

        /**
         * 周活跃用户数（WAU）
         */
        private Long weeklyActiveUsers;

        /**
         * 月活跃用户数（MAU）
         */
        private Long monthlyActiveUsers;

        /**
         * 昨日活跃用户数
         */
        private Long yesterdayActiveUsers;

        /**
         * 上周活跃用户数
         */
        private Long lastWeekActiveUsers;

        /**
         * 上月活跃用户数
         */
        private Long lastMonthActiveUsers;

        /**
         * 日活跃度增长率
         */
        private Double dauGrowthRate;

        /**
         * 周活跃度增长率
         */
        private Double wauGrowthRate;

        /**
         * 月活跃度增长率
         */
        private Double mauGrowthRate;
    }

    /**
     * 内容增长趋势统计（近7天）
     */
    @Data
    public static class GrowthTrendStats {
        /**
         * 日期列表（近7天）
         */
        private List<String> dates;

        /**
         * 用户增长趋势数据
         */
        private List<Long> userTrend;

        /**
         * 文章增长趋势数据
         */
        private List<Long> articleTrend;

        /**
         * 评论增长趋势数据
         */
        private List<Long> commentTrend;

        /**
         * 活跃用户趋势数据
         */
        private List<Long> activeUserTrend;

        /**
         * 总用户数趋势
         */
        private List<Long> totalUserTrend;

        /**
         * 总文章数趋势
         */
        private List<Long> totalArticleTrend;

        /**
         * 总评论数趋势
         */
        private List<Long> totalCommentTrend;
    }
}